home *** CD-ROM | disk | FTP | other *** search
/ C# & Game Programming - A…er's Guide (2nd Edition) / Buono 2nd Ed.iso / Chapter5 / 5.37 / 5.37.cs next >
Text File  |  2004-09-07  |  3KB  |  130 lines

  1. /* Linking classes with keywords overide and virtual. */
  2. using System;
  3.  
  4. namespace Chapter5 {
  5.     public class Area {
  6.         public short Base, Height;
  7.         public double Radius; 
  8.         public short Base2; 
  9.   
  10.         public Area() {}
  11.         public Area(short w, short h) { 
  12.             Base = w;
  13.             Height = h;
  14.         }
  15.  
  16.         public Area(double r) {
  17.             Radius = r;
  18.         }
  19.  
  20.         public Area(short a, short b, short h) { 
  21.             Base = a; 
  22.             Base2 = b; 
  23.             Height = h;
  24.         }
  25.  
  26.         public static short ReadBase(Area X) { 
  27.             return(X.Base);
  28.         }
  29.  
  30.         public static void SetBase(Area X, short a) { 
  31.             X.Base = a;
  32.         }
  33.  
  34.         public static void SetBase2(Area X, short b) { 
  35.             X.Base2 = b;
  36.         }
  37.  
  38.         public static short ReadHeight(Area X) { 
  39.             return(X.Height);
  40.         }
  41.  
  42.         public static void SetHeight(Area X, short h) { 
  43.             X.Height = h;
  44.         }
  45.  
  46.         public static double ReadRadius(Area X) { 
  47.             return(X.Radius);
  48.         }
  49.  
  50.         public static void SetRadius(Area X, double r) {
  51.             X.Radius = r;
  52.         }
  53.  
  54.         public static double SumOfBases(Area X) {
  55.             return(X.Base+X.Base2);
  56.         }
  57.  
  58.         public virtual void CalculateArea() { 
  59.             Console.WriteLine("No Shape Found\n");
  60.         }
  61.     }
  62.     
  63.     public class Parallelogram: Area {
  64.         public Parallelogram(short w, short l) {
  65.             SetBase(this, w);
  66.             SetHeight(this, l);
  67.         }
  68.  
  69.         override public void CalculateArea() { 
  70.             Console.WriteLine("Area  = " + ReadBase(this) * 
  71.                 ReadHeight(this));
  72.         }
  73.     } 
  74.  
  75.     public class Triangle : Area {
  76.         public Triangle(short w, short l) { 
  77.             SetBase(this, w); SetHeight(this, l);}
  78.         override public void CalculateArea() { 
  79.             Console.WriteLine("\n Area = " + (ReadBase(this) * 
  80.                 ReadHeight(this)) / 2);}
  81.     }
  82.  
  83.     public class Circle : Area {
  84.         public double PI = 3.1415926535897932384626433832795;
  85.         public Circle(double r) {
  86.             SetRadius(this, r);
  87.         }
  88.  
  89.         override public void CalculateArea() {
  90.             Console.WriteLine("\n Area = " + (PI * ReadRadius(this) * 
  91.                 ReadRadius(this)));
  92.         }
  93.     }
  94.  
  95.     public class Trapezoid : Area {
  96.         public Trapezoid(short a, short b, short h) {
  97.             SetBase(this, a);
  98.             SetBase2(this, b); 
  99.             SetHeight(this, h);
  100.         }
  101.  
  102.         override public void CalculateArea() { 
  103.             Console.WriteLine("\n Area = " + ReadHeight(this) * 
  104.                 (SumOfBases(this)) / 2);
  105.         }
  106.  
  107.         public static void CalculateArea(Area Relay) { 
  108.             Relay.CalculateArea();
  109.         }
  110.  
  111.         static void Main() {
  112.             Area Shape = new Area(); 
  113.  
  114.             Parallelogram Shape1 = new Parallelogram(5, 5); 
  115.             CalculateArea(Shape1);
  116.  
  117.             Parallelogram Shape2 = new Parallelogram(5, 6); 
  118.             CalculateArea(Shape2);
  119.  
  120.             Triangle Shape3 = new Triangle(5, 6); 
  121.             CalculateArea(Shape3);
  122.  
  123.             Circle Shape4 = new Circle(3); 
  124.             CalculateArea(Shape4);
  125.     
  126.             Trapezoid Shape5 = new Trapezoid(4, 5, 6); 
  127.             CalculateArea(Shape5);
  128.         }
  129.     }
  130. }